// DataLibrary InterfacePlugin Skin - Config

// 識別子：DL_CFG
// 内容  ：

//----------------------------------------------------------------------------//
// Plugin
//----------------------------------------------------------------------------//

//-- プラグインの読み込み処理 --//
DL_LoadSkin_Config:
	Call DL_LoadSkin "Common"  // スキン用の共有サブルーチンを読み込む
Return


//-- プラグインの終了処理 --//
//DL_UnLoadSkin_Config:
//Return


//----------------------------------------------------------------------------//
// Skin-Config
//----------------------------------------------------------------------------//

//-- SkinAction action_id select_id : アクションに合わせてインターフェースを再描画する --//
DL_CFG_SkinAction:
	Switch Args(1)
	Case "StartInterface"
		// スクロールの準備をする
		Call DL_SetScrollData "Config" "PageB" 4 Count(DL_CFG_ConfigData)
		
		Call DL_CMN_ChangeFontFace "Config"  // 個別フォント指定を適用する
		Call DL_CFG_DisplayInterface         // インターフェースを表示する
	Case "EndInterface"
		// スクロール情報を削除する
		Call DL_SetScrollData "Config" "Delete"
		
		Call DL_CMN_ClearFontFace "Config"   // 個別フォント指定を解除する
	Case "SelectConfigData"
		Call DL_CFG_ConfigFrameAction Args(2) "Select"
		Refresh
	Case "RedrawConfigData"
		Call DL_CFG_DisplayInterface
		Refresh
	Case "CancelConfigData"
		ClearPicture
		Refresh
	Case "SelectScroll"
		Call DL_CMN_PageControllAciton Args(2) "Select"
		Refresh
	Case "RedrawScroll"
		Call DL_CFG_DisplayInterface
		Refresh
	Case "CancelScroll"
		ClearPicture
		Refresh
	Case "SelectConfig"
		Call DL_CMN_ImageButtonAction "Config" "Select"
		Refresh
	Case "SelectReturn"
		Call DL_CMN_ImageButtonAction "Return" "Select"
		Refresh
	EndSw
Return


//-- DisplayInterface : インターフェースを表示する --//
DL_CFG_DisplayInterface:
	Call DL_CMN_ClearDisplay      // 画面を初期化する
	Call DL_CMN_ClearShortcutKey  // ショートカットキーを初期化する
	UnSet DL_CMN_ActionData       // アクションデータを初期化する
	
	// 文字・線の描画方法を保持にする
	Call DL_CMN_SetDrawOption "保持"
	
	// 背景とタイトルを表示する
	Call DL_CMN_Background
	Call DL_CMN_Title DL_GetOptionValue("ConfigTitle", "CONFIG")
	
	// コンフィグ項目を表示する
	Local py = 64
	Local i
	For i = DL_ScrollFirst("Config") To DL_ScrollLast("Config")
		Call DL_CFG_ConfigFrame 40 py i
		Incr py 90
	Next
	
	// スクロールボタンを表示する
	If DL_GetScrollData("Config", "IsPrev") Or DL_GetScrollData("Config", "IsPrev") Then
		Call DL_CMN_PageControll 166 429 "Config"
	EndIf
	
	// 戻るボタンを表示する
	Call DL_CMN_ImageButton "Return" DL_Image["Return"] 424 8 32 32 "戻る" 1
	
	// 文字・線の描画方法を通常にする
	Call DL_CMN_SetDrawOption "通常"
	
	// ショートカットキーを設定する
	Call DL_CMN_SetShortcutKey 2 "Cancel"    // RightClick
	Call DL_CMN_SetShortcutKey 8 "Cancel"    // BS
	Call DL_CMN_SetShortcutKey 27 "Quit"     // ESC
	Call DL_CMN_SetShortcutKey 112 "Index"   // F1
	If DL_GetScrollData("Config", "IsPrev") Then
		Call DL_CMN_SetShortcutKey 37 "Scroll Help -1"  // ←
	EndIf
	If DL_GetScrollData("Config", "IsNext") Then
		Call DL_CMN_SetShortcutKey 39 "Scroll Help +1"  // →
	EndIf
Return


//-- ConfigFrame x y config_data [option] : コンフィグ項目を表示する --//
DL_CFG_ConfigFrame:
	Incr BaseX Args(1)
	Incr BaseY Args(2)
	
	Local data = DL_CFG_ConfigData[Args(3)]
	Local id = LIndex(data, 2)
	Local mode = LIndex(data, 3)
	Local value = DL_GetConfigValue(id, LIndex(data, 4))
	
	// フレームを表示する
	Call DL_CMN_Frame 0 0 300 76
	Call DL_CMN_DrawLine 0 0 300
	Call DL_CMN_Frame 304 0 96 76
	Call DL_CMN_DrawLine 304 0 96
	
	// 項目名を表示する
	Font 9pt DL_FontFace["Text"] Regular
	Call DL_CMN_DrawString 8 7 LIndex(data, 5) "Emphasis"
	
	// 解説を表示する
	Local text = LIndex(data, 6)
	Local str i
	For i = 1 To 3
		str = RegExp(text, "[^\;]+")
		text = Mid(text, Len(str) + 2)
		Call DL_CMN_DrawString 20 (9 + 16 * i) str
	Next
	
	// 状態を表示する
	Font 11pt
	Switch LIndex(mode, 1)
	Case "OnOff"
		Local button = IIf(value = 1, "[ On ]", "[ Off ]")
		Local caption = "OnOffを切り替える"
		Call DL_CMN_DrawString (304 + DL_SCX(button, 96)) DL_SCY(button, 76) button "Point"
	Case "InputNum"
		Local button = "[ " & DL_CFG_GetInputDefined(value, mode) & " ]"
		Local caption = "数値を入力する"
		Call DL_CMN_DrawString (304 + DL_SCX(button, 96)) DL_SCY(button, 76) button "Point"
	EndSw
	
	// ホットポイントを設置する
	Call DL_CMN_HotPoint ("ConfigData " & Args(3)) 304 0 96 76 caption
	Set DL_CMN_ActionData["ConfigData " & Args(3)] _
		List(BaseX, BaseY, "(" & id & ")", "(" & mode & ")", LIndex(data, 4))
	
	Incr BaseX (Args(1) * -1)
	Incr BaseY (Args(2) * -1)
Return


//-- ConfigFrameAction action_id color_id : コンフィグ項目を表示する --//
DL_CFG_ConfigFrameAction:
	Local data = DL_CMN_ActionData[Args(1)]
	If data = "" Then
		Return
	EndIf
	
	Local base_pos = List(BaseX, BaseY)
	Set BaseX LIndex(data, 1)
	Set BaseY LIndex(data, 2)
	
	Local id = LIndex(data, 3)
	Local mode = LIndex(data, 4)
	Local value = DL_GetConfigValue(id, LIndex(data, 5))
	
	Font 11pt DL_FontFace["Text"] Regular
	Switch LIndex(mode, 1)
	Case "OnOff"
		Local button = IIf(value = 1, "[ On ]", "[ Off ]")
		Call DL_CMN_DrawString (304 + DL_SCX(button, 96)) DL_SCY(button, 76) button Args(2)
	Case "InputNum"
		Local button = "[ " & DL_CFG_GetInputDefined(value, mode) & " ]"
		Call DL_CMN_DrawString (304 + DL_SCX(button, 96)) DL_SCY(button, 76) button Args(2)
	EndSw
	
	Set BaseX LIndex(base_pos, 1)
	Set BaseY LIndex(base_pos, 2)
Return


